/**
 *
 */
package com.iknight.mgr.core.base;

import java.io.Serializable;
import java.util.List;
import java.util.Map;

/**
 * @param <T>  entity
 * @param <PK> primary key
 * @author Jeryzym
 */

public interface BaseMapper<T extends Serializable, PK extends Serializable> {

    /**
     * @param record
     * @description 插入一条记录
     */
    void insert(T record);

    /**
     * @param record
     * @description 更新一条记录
     */
    void update(T record);

    /**
     * @param pkey
     * @description 根据主键删除一条记录
     */
    void delete(PK pkey);

    /**
     * @param pkey
     * @return
     * @description 根据主键查询一条记录
     */
    T selectOne(PK pkey);

    /**
     * @param params
     * @return
     * @description 根据条件查询返回记录集
     */
    List<T> selectByCond(Map<String, Object> params);

}
